package com.reactim.user.service;

import com.reactim.user.dto.UserLoginRequest;
import com.reactim.user.dto.UserRegisterRequest;
import com.reactim.user.dto.UserResponse;
import com.reactim.user.entity.User;
import reactor.core.publisher.Mono;

import java.util.List;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 用户注册
     */
    Mono<UserResponse> register(UserRegisterRequest request);
    
    /**
     * 用户登录
     */
    Mono<String> login(UserLoginRequest request);
    
    /**
     * 根据ID获取用户信息
     */
    Mono<UserResponse> getUserById(Long userId);
    
    /**
     * 根据用户名获取用户信息
     */
    Mono<UserResponse> getUserByUsername(String username);
    
    /**
     * 更新用户信息
     */
    Mono<UserResponse> updateUser(Long userId, UserResponse userInfo);
    
    /**
     * 搜索用户
     */
    Mono<List<UserResponse>> searchUsers(String keyword);
    
    /**
     * 检查用户是否存在
     */
    Mono<Boolean> existsByUsername(String username);
    
    /**
     * 验证用户密码
     */
    Mono<Boolean> validatePassword(String account, String password);
    
    /**
     * 更新最后登录时间
     */
    Mono<Void> updateLastLoginTime(Long userId);
    
    /**
     * 检查用户是否存在（根据ID）
     */
    boolean existsById(Long userId);
}